package com.xuelang.pipeline.client.application.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.Date;

/**
 * 组件DTO
 *
 * @author xiwen.zxg
 * @since 2024/5/15
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ComponentDTO {
    private Long id;
    /**
     * 应用编码
     */
    @NotEmpty(message = "应用编码不能为空")
    private String applicationCode;

    /**
     * 组件名称
     */
    @NotEmpty(message = "组件名称不能为空")
    private String name;

    /**
     * 组件编码
     */
    @NotEmpty(message = "组件编码不能为空")
    private String code;

    /**
     * 组件标签
     */
    private String label;

    /**
     * 组件类型，1前端组件、2后端组件
     */
    @NotNull(message = "组件类型不能为空")
    private Integer componentType;

    /**
     * 编程语言，如NODEJS/JAVA/GO/PYTHON
     */
    @NotEmpty(message = "编程语言不能为空")
    private String programLanguage;

    /**
     * 代码仓库
     */
    @NotEmpty(message = "代码仓库不能为空")
    private String codeRepository;

    /**
     * GIT凭证Token
     */
    @NotEmpty(message = "GIT凭证Token不能为空")
    private String gitToken;

    /**
     * 管理人员，多个使用###分割，如A###B###C
     */
    private String administrator;

    /**
     * 创建人
     */
    private String creatorId;

    /**
     * 创建人名称
     */
    private String creator;

    /**
     * 创建时间
     */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;


    // 1=不可读, 0 = 可读
    private Integer readStatus = 1;

    // 1=不可写 , 0= 可写
    private Integer writeStatus = 1;
}
